package greedy.合并区间;


//以数组 intervals 表示若干个区间的集合，其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间，并返
//回 一个不重叠的区间数组，该数组需恰好覆盖输入中的所有区间 。
//
//
//
// 示例 1：
//
//
//输入：intervals = [[1,3],[2,6],[8,10],[15,18]]
//输出：[[1,6],[8,10],[15,18]]
//解释：区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
//
//
// 示例 2：
//
//
//输入：intervals = [[1,4],[4,5]]
//输出：[[1,5]]
//解释：区间 [1,4] 和 [4,5] 可被视为重叠区间。
//
//
//
// 提示：
//
//
// 1 <= intervals.length <= 10⁴
// intervals[i].length == 2
// 0 <= starti <= endi <= 10⁴
//
// Related Topics 数组 排序 👍 1531 👎 0
public class Solution56 {
    public static int[][] merge(int[][] intervals) {

        int[][] merges = new int[intervals.length][2];
        for (int i = 0; i < intervals.length - 1; ) {
            if (intervals[i][1] >= intervals[i + 1][0]) {
                merges[i][0] = intervals[i][0];
                merges[i][1] = intervals[i + 1][1];
                i += 2;
            } else {
                merges[i][0] = intervals[i][0];
                merges[i][1] = intervals[i][1];
                i += 1;
            }
        }

        return merges;
    }

    public static void main(String[] args) {
        int[][] ints = new int[][]{{1, 3}, {2, 6}, {8, 10}, {15, 18}};
        System.out.println(merge(ints));
    }
}

